The communications industry is rapidly changing to adjust to emerging technologies and ever increasing customer demand. This customer demand for new applications and increased performance of existing applications is driving communications network and system providers to employ networks and systems having greater speed and capacity (e.g., greater bandwidth). In trying to achieve these goals, a common approach taken by many communications providers is to use packet switching technology. Increasingly, public and private communications networks are being built and expanded using various packet technologies, such as Internet Protocol (IP). Note, nothing described or referenced in this document is admitted as prior art to this application unless explicitly so stated.
A network device, such as a switch or router, typically receives, processes, and forwards or discards packets. A part of such processing typically includes applying multiple features to each packet, whether at an ingress line card, egress line card, and/or at some other place within the network device. Examples of such features, include, but are not limited to: access control lists (ACLs), quality of service (QoS) (e.g., committed access rate, rate-limiting, shaping, marking, etc.), aggregated/sampled Netflow accounting, unicast reverse-path forwarding (uRPF), policy-based routing, Border Gateway Protocol (BGP) policy accounting, QoS policy propagation via BGP, accounting, statistics, web cache redirect, lawful Interception, IPSec encryption/decryption, intrusion detection and prevention, state-full firewall, network address translation, and network-based application recognition. Typically, not all of these features are enabled, and only the enabled features are applied to the packets.
Network providers and customers desire the ability to control the order in which features are applied. Different orders of applying features to a packet can produce different results. For a simple example, applying a feature that filters packets (e.g., causes some packets to be dropped) prior to a feature that maintains or relies on statistics or packet counts for packets after the filtering of packets will produce different results than if this order was reversed. Also, the order in which these features are applied to a packet in a specific device may be limited by the hardware based on its design (e.g., some resources required for the application are only accessible at certain locations) or the hardware may offer complete flexibility such as in a microcode-based network device. There appears to be a trade-off between the flexibility in the allowed feature application order and the complexity in implementing and testing an arbitrary feature application order. Desired are flexible network devices which allow the ability to define the desired order in which features are applied to packets.